RAMsetta Stone: Secret of Evermore

by: phonymike

Checksum and Strings - Boy stats - Dog stats - Various stats

The goal of this document is to show a complete conversion of WRAM addresses ($7E:0000 - $7F:FFFF) into SRAM slot addresses. While many descriptions are listed (copied from here), the value of this RAMsetta Stone is in the matching addresses it contains (SRAM and WRAM), and not the description of those addresses. It is far quicker to search for changed values in a savestate (WRAM), than it is to travel to a save point in the game to commit changes (SRAM). For more information about the saveram checksum and other details, see the Other Resources at the bottom.

At the beginning of the .srm file, there are two bytes that are not part of the save slots. Byte 0x00 is for saving the mono/stereo (0x00/0x01) setting, and byte 0x01 is for saving the last saved slot number (0x00/0x02/0x04/0x06). These values are not covered by a checksum.

Following those two bytes, there are four save slots. The addresses in this document are relative to the beginning of each save slot. If you want to change a value in a .srm file, you need to take the address in the SRAM column and add it to one of the following slot offsets:

Save slot offsets in emulator .srm file
Save Slot #1 0x02
Save Slot #2 0x333
Save Slot #3 0x664
Save Slot #4 0x995

For instance, the Boy's name for slot #1 is located at 0x02 + 0x26 in the .srm file. If any bytes are changed in a save slot, you must recalculate the checksum for that slot or the game will show an empty save slot.


Checksum and strings

SRAM Length Location Description (checksum and strings)
0x00 0x02 (calculated at save time) Save slot checksum
0x02 0x24 (Decompressed from ROM) Last save point name (zero padded, must end with byte 0x00)
0x26 0x24 WRAM $7E:2210 Boy name (zero padded, must end with byte 0x00)
0x4A 0x24 WRAM $7E:2234 Dog name (zero padded, must end with byte 0x00)

 

Boy stats

SRAM Length WRAM Description (Boy stats)
0x6E 0x02 $7E:4EB3 Current HP
SRAM Length WRAM Description (Boy stats)
0x70 0x02 $7E:4ECF Status 1 - Status ID
0x72 0x02 $7E:4ED1 Status 1 - Main Timer
0x74 0x02 $7E:4ED3 Status 1 - Boost provided to statistic(s), OR Time since/until last/next damage/healing interval
0x76 0x02 $7E:4ED5 Status 2 - Status ID
0x78 0x02 $7E:4ED7 Status 2 - Main Timer
0x7A 0x02 $7E:4ED9 Status 2 - Boost provided to statistic(s), OR Time since/until last/next damage/healing interval
0x7C 0x02 $7E:4EDB Status 3 - Status ID
0x7E 0x02 $7E:4EDD Status 3 - Main Timer
0x80 0x02 $7E:4EDF Status 3 - Boost provided to statistic(s), OR Time since/until last/next damage/healing interval
0x82 0x02 $7E:4EE1 Status 4 - Status ID
0x84 0x02 $7E:4EE3 Status 4 - Main Timer
0x86 0x02 $7E:4EE5 Status 4 - Boost provided to statistic(s), OR Time since/until last/next damage/healing interval
SRAM Length WRAM Description (unknowns)
0x88 0x02 $7E:4F23 unknown
0x8A 0x02 $7E:4F25 unknown
0x8C 0x02 $7E:4F27 unknown
SRAM Length WRAM Description (Boy stats)
0x8E 0x02 $7E:0A35 Max HP
SRAM Length WRAM Description (Boy stats)
0x90 0x02 $7E:0A3F Attack
0x92 0x02 $7E:0A41 Defense
0x94 0x02 $7E:0A43 Magic Def
0x96 0x02 $7E:0A45 Evade %
0x98 0x02 $7E:0A47 Hit %
0x9A 0x03 $7E:0A49 Experience (3 bytes)
SRAM Length WRAM Description (Boy stats)
0x9D 0x02 $7E:0A50 Level
0x9F 0x02 $7E:0A52 Max Chargeup

The values below are curious. As far as I can tell, after saving your game, these values will always be 0x4F. It seems an oversight of the game programmers, as the game copies these values from $30:4Fxx, which is open bus. The values below will always be 0x4F in a save file, but it seems the programmers meant to copy the values from $7E:4Fxx.

SRAM Length Open bus WRAM (?) Description (Boy stats)
0xA1 0x02 $30:4F29 $7E:4F29 Overall boost to Attack statistic
0xA3 0x02 $30:4F2B $7E:4F2B Overall boost to Defense statistic
0xA5 0x02 $30:4F2D $7E:4F2D Overall boost to Evade % statistic
0xA7 0x02 $30:4F2F $7E:4F2F Overall boost to Hit % statistic
0xA9 0x02 $30:4F31 $7E:4F31 Overall boost to Magic Defense statistic
0xAB 0x02 $30:4F33 $7E:4F33 Last damage taken.
0xAD 0x02 $30:4F35 $7E:4F35 Regenerate (Horace) or Pixie Dust protection in effect

 

Dog stats

SRAM Length WRAM Description (Dog stats)
0xAF 0x02 $7E:4F61 Current HP
SRAM Length WRAM Description (Dog stats)
0xB1 0x02 $7E:4F7D Status 1 - Status ID
0XB3 0x02 $7E:4F7F Status 1 - Main Timer
0xB5 0x02 $7E:4F81 Status 1 - Boost provided to statistic(s), OR Time since/until last/next damage/healing interval
0xB7 0x02 $7E:4F83 Status 2 - Status ID
0xB9 0x02 $7E:4F85 Status 2 - Main Timer
0xBB 0x02 $7E:4F87 Status 2 - Boost provided to statistic(s), OR Time since/until last/next damage/healing interval
0xBD 0x02 $7E:4F89 Status 3 - Status ID
0xBF 0x02 $7E:4F8B Status 3 - Main Timer
0xC1 0x02 $7E:4F8D Status 3 - Boost provided to statistic(s), OR Time since/until last/next damage/healing interval
0xC3 0x02 $7E:4F8F Status 4 - Status ID
0xC5 0x02 $7E:4F91 Status 4 - Main Timer
0xC7 0x02 $7E:4F93 Status 4 - Boost provided to statistic(s), OR Time since/until last/next damage/healing interval
SRAM Length WRAM Description (unknowns)
0xC9 0x02 $7E:4FD1 unknown
0xCB 0x02 $7E:4FD3 unknown
0xCD 0x02 $7E:4FD5 unknown
SRAM Length WRAM Description (Dog stats)
0xCF 0x02 $7E:0A7F Max HP
SRAM Length WRAM Description (Dog stats)
0xD1 0x02 $7E:0A89 Attack
0xD3 0x02 $7E:0A8B Defense
0xD5 0x02 $7E:0A8D Magic Def
0xD7 0x02 $7E:0A8F Evade %
0xD9 0x02 $7E:0A91 Hit %
0xDB 0x03 $7E:0A93 Experience (3 bytes)
SRAM Length WRAM Description (Dog stats)
0xDE 0x02 $7E:0A9A Level
0xE0 0x02 $7E:0A9C Max Chargeup

The values below are curious. As far as I can tell, after saving your game, these values will always be 0x4F. It seems an oversight of the game programmers, as the game copies these values from $30:4Fxx, which is open bus. The values below will always be 0x4F in a save file, but it seems the programmers meant to copy the values from $7E:4Fxx.

SRAM Length Open bus WRAM (?) Description (Dog stats)
0xE2 0x02 $30:4FD7 $7E:4FD7 Overall boost to Attack statistic
0xE4 0x02 $30:4FD9 $7E:4FD9 Overall boost to Defense statistic
0xE6 0x02 $30:4FDB $7E:4FDB Overall boost to Evade % statistic
0xE8 0x02 $30:4FDD $7E:4FDD Overall boost to Hit % statistic
0xEA 0x02 $30:4FDF $7E:4FDF Overall boost to Magic Defense statistic
0xEC 0x02 $30:4FE1 $7E:4FE1 Last damage taken.
0xEE 0x02 $30:4FE3 $7E:4FE3 Regenerate (Horace) or Pixie Dust protection in effect

 

Various stats

SRAM Length WRAM Description (various things)
0xF0 0x02 $7E:0ABA Current equipped weapon
0xF2 0x02 $7E:0ABC unknown
0xF4 0x02 $7E:0ABE Dog - Pointer to current Collar stats
0xF6 0x02 $7E:0AC0 Boy - Pointer to current Armor stats
0xF8 0x02 $7E:0AC2 Boy - Pointer to current Helmet stats
0xFA 0x02 $7E:0AC4 Boy - Pointer to current Armband stats
0xFC 0x03 $7E:0AC6 Money - Talons
0xFF 0x03 $7E:0AC9 Money - Jewels
0x102 0x03 $7E:0ACC Money - Gold Coins
0x105 0x03 $7E:0ACF Money - Credits
0x108 ... 0x154 0x4D $7E:0AD2 - $7E:0B1E Most are listed in Secret_of_Evermore:RAM_map
SRAM Length WRAM Description (Alchemy levels and unknowns)
0x155 0x46 $7E:2F52 Alchemy spell levels (low component)
0x19B 0x46 $7E:2F98 Alchemy spell levels (high component)
0x1E1 ... 0x1F6 0x16 $7E:2FDE - $7E:2FF3 unknown
SRAM Length WRAM Description (unknowns)
0x1F7 ... 0x288 0x92 $7E:2258 - $7E:22E9 unknown
SRAM Length WRAM Description (Alchemy ingredients and Inventory)
0x289 ... 0x2E4 0x5C $7E:22FF - $7E:235A Most are listed in Secret_of_Evermore:RAM_map
SRAM Length WRAM Description (unknowns)
0x2E5 ... 0x310 0x2C $7E:2361 - $7E:238C unknown
SRAM Length WRAM Description (Trade good amounts)
0x311 ... 0x330 0x20 $7E:2513 - $7E:2532 Most are listed in Secret_of_Evermore:RAM_map

Our Hero standing with one arm raised and looking up before casting an alchemy spell.

Other Resources

Secret of Evermore SRAM Document by John David Ratliff - One of the best documents on SRAM

Secret of Evermore SRAM Format - Seems to be a transcription of the above text.

Secret of Evermore:RAM map - Addresses and descriptions of many WRAM variables.

Evermore «Rosetta Stone» project - Exploring the saveram format with custom search tools (web based and command line). Check here for updated descriptions of the addresses!

bsnes-plus - A great debugging SNES emulator used to trace the assembly and find these WRAM and SRAM addresses.


This document uses CSS template "markdown7" from Markdown css theme collection" by Jason Milkins.

RAMsetta Stone: Secret of Evermore - version 1 - February 8, 2021